/**
 * 
 */
package com.snda.relation.service.privilege.biz.activities;

import com.snda.relation.service.exception.ServiceInvocationException;
import com.snda.relation.service.opensocial.GetResponse;
import com.snda.relation.service.opensocial.UpdateResponse;
import com.snda.commons.servicegate.annotations.Endpoint;
import com.snda.commons.servicegate.annotations.Param;
import com.snda.commons.servicegate.annotations.Service;

/**
 * @author yangjiandong
 * 
 */
@Service("ActivitiesPrivilegeService")
public interface ActivitiesPrivilegeService {

	/**
	 * to find out whose activities the sdid shield
	 * 
	 * @param sdid
	 * @return list of long indicate the sdids of the people
	 */
	@Endpoint(alias="getShieldPeople")
	public GetResponse<Long> listShieldPeople(@Param("sdid") Long sdid)
			throws ServiceInvocationException;

	/**
	 * to find out which app's activities the sdid shield
	 * 
	 * @param sdid
	 * @return list of long indicate the appid of the app
	 */
	@Endpoint(alias="getShieldApp")
	public GetResponse<Long> listShieldApp(@Param("sdid") Long sdid)
			throws ServiceInvocationException;

	/**
	 * to find out which app's activities the sdid decide to silent
	 * 
	 * @param sdid
	 * @return list of long indicate the appid of the app
	 */
	@Endpoint(alias="getSilentApp")
	public GetResponse<Long> listSilentApp(@Param("sdid") Long sdid)
			throws ServiceInvocationException;
	
	/**
	 * to find out total number of people the sdid shield
	 * 
	 * @param sdid
	 * @return number
	 */
	@Endpoint(alias="getCountShieldPeople")
	public GetResponse<Integer> listCountShieldPeople(@Param("sdid") Long sdid)
			throws ServiceInvocationException;
	
	/**
	 * to find out total number of app the sdid shield
	 * 
	 * @param sdid
	 * @return number of the shield app list
	 */
	@Endpoint(alias="getCountShieldApp")
	public GetResponse<Integer> listCountShieldApp(@Param("sdid") Long sdid)
			throws ServiceInvocationException;

	
	/**
	 * to find out total number of app the sdid decide to silent
	 * 
	 * @param sdid
	 * @return number of the silent app list 
	 */
	@Endpoint(alias="getCountSilentApp")
	public GetResponse<Integer> listCountSilentApp(@Param("sdid") Long sdid)
			throws ServiceInvocationException;
	/**
	 * shield a peroson's activities
	 * 
	 * @param sdid
	 * @param ssdid
	 * @return to indicate whether insert a new record
	 * @throws ServiceInvocationException
	 */
	@Endpoint(alias="addShieldPerson")
	public UpdateResponse addShieldPerson(@Param("sdid") Long sdid,
			@Param("ssdid") Long ssdid) throws ServiceInvocationException;

	/**
	 * shield a app's activities
	 * 
	 * @param sdid
	 * @param sappid
	 * @return to indicate whether insert a new record
	 * @throws ServiceInvocationException
	 */
	@Endpoint(alias="addShieldApp")
	public UpdateResponse addShieldApp(@Param("sdid") Long sdid,
			@Param("sappid") Long sappid) throws ServiceInvocationException;

	/**
	 * to indicate a app that the sdid do not want to generate an activities
	 * 
	 * @param sdid
	 * @param sappid
	 *            silented app id
	 * @return to indicate whether insert a new record
	 * @throws ServiceInvocationException
	 */
	@Endpoint(alias="addSilentApp")
	public UpdateResponse addSilentApp(@Param("sdid") Long sdid,
			@Param("sappid") Long sappid) throws ServiceInvocationException;

	/**
	 * remove the person out my shield list
	 * 
	 * @param sdid
	 * @param ssdid
	 * @return to indicate whether delete a record
	 * @throws ServiceInvocationException
	 */
	@Endpoint(alias="deleteShieldPerson")
	public UpdateResponse deleteShieldPerson(@Param("sdid") Long sdid,
			@Param("ssdid") Long ssdid) throws ServiceInvocationException;

	/**
	 * remove the app out my shield list
	 * 
	 * @param sdid
	 * @param ssdid
	 * @return to indicate whether delete a record
	 * @throws ServiceInvocationException
	 */
	@Endpoint(alias="deleteShieldApp")
	public UpdateResponse deleteShieldApp(@Param("sdid") Long sdid,
			@Param("sappid") Long sappid) throws ServiceInvocationException;

	/**
	 * remove the app out my silent list
	 * 
	 * @param sdid
	 * @param ssdid
	 * @return to indicate whether delete a record
	 * @throws ServiceInvocationException
	 */
	@Endpoint(alias="deleteSilentApp")
	public UpdateResponse deleteSilentApp(@Param("sdid") Long sdid,
			@Param("sappid") Long sappid) throws ServiceInvocationException;

	/**
	 * to judge whether an app is in the silent list
	 * 
	 * @param sdid
	 * @param sappid
	 * @return 1 indicate yes 0 otherwise(contained in the data)
	 * @throws ServiceInvocationException
	 */
	@Endpoint(alias="getJudgeSilentApp")
	public UpdateResponse judgeSilentApp(@Param("sdid") Long sdid,
			@Param("sappid") Long sappid) throws ServiceInvocationException;

	/**
	 * to judge whether an app is in the shield list
	 * 
	 * @param sdid
	 * @param sappid
	 * @return 1 indicate yes 0 otherwise(contained in the data)
	 * @throws ServiceInvocationException
	 */
	@Endpoint(alias="getJudgeShieldApp")
	public UpdateResponse judgeShieldApp(@Param("sdid") Long sdid,
			@Param("sappid") Long sappid) throws ServiceInvocationException;

	/**
	 * to judge whether person is in the shield list
	 * 
	 * @param sdid
	 * @param ssdid
	 * @return 1 indicate yes 0 otherwise(contained in the data)
	 * @throws ServiceInvocationException
	 */
	@Endpoint(alias="getJudgeShieldPerson")
	public UpdateResponse judgeShieldPerson(@Param("sdid") Long sdid,
			@Param("ssdid") Long ssdid) throws ServiceInvocationException;

}
